// pages/2411Ayiliao-pages/profile/profile.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    userInfo: {
      nickName: '七尾Sam',
      phoneNumber: '169****0456'
    },
    showPatientPage: false, // 是否显示患者管理页面
    showInpatientPage: false, // 是否显示住院人管理页面
    patientList: [], // 患者列表数据

    outpatientRecords: [
      { name: '预约挂号记录', id: 'appointment_record' },
      { name: '门诊缴费记录', id: 'outpatient_payment_record' },
      { name: '门诊充值记录', id: 'outpatient_recharge_record' },
      { name: '核酸预约记录', id: 'nucleic_acid_record' },
      { name: '病案申请邮寄记录', id: 'medical_record_mailing' },
      { name: '问题反馈', id: 'feedback' }
    ],
    inpatientRecords: [
      { name: '住院充值记录', id: 'inpatient_recharge_record' },
      { name: '住院缴费记录', id: 'inpatient_payment_record' },
      { name: '住院信息查询', id: 'inpatient_info_query' },
      { name: '住院费用明细', id: 'inpatient_cost_detail' }
    ]
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    console.log('个人中心页面加载')
    wx.showToast({
      title: '个人中心页面已加载',
      icon: 'success',
      duration: 2000
    })
    this.checkLoginStatus()
    this.loadPatientData()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.checkLoginStatus()
    this.loadPatientData() // 每次显示页面时刷新患者数据
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  // 切换到就诊人管理
  switchToOutpatient() {
    this.setData({
      currentView: 'outpatient'
    })
    this.loadPatientData() // 刷新患者数据
  },

  // 切换到住院人管理
  switchToInpatient() {
    this.setData({
      currentView: 'inpatient'
    })
  },

  // 加载患者数据
  loadPatientData() {
    console.log('加载患者数据')
    
    // 显示加载提示
    wx.showLoading({
      title: '加载中...'
    })
    
    // 从数据库获取实时数据
    wx.request({
      url: 'http://localhost:8080/patient/list',
      method: 'GET',
      header: {
        'Content-Type': 'application/json'
      },
      timeout: 10000, // 10秒超时
      success: (res) => {
        if (res.statusCode === 200 && res.data) {
          let patientData = res.data
          
          // 检查数据格式并处理
          if (typeof patientData === 'string') {
            try {
              patientData = JSON.parse(patientData)
            } catch (e) {
              console.error('JSON解析失败:', e)
              this.setMockData()
              return
            }
          }
          
          // 确保数据是数组
          if (!Array.isArray(patientData)) {
            console.error('数据不是数组格式:', patientData)
            // 尝试从对象中提取数组
            if (patientData.data && Array.isArray(patientData.data)) {
              patientData = patientData.data
            } else if (patientData.list && Array.isArray(patientData.list)) {
              patientData = patientData.list
            } else if (patientData.patients && Array.isArray(patientData.patients)) {
              patientData = patientData.patients
            } else {
              console.error('无法找到数组数据')
              this.setMockData()
              return
            }
          }
          
          // 处理数据，确保格式正确
          const processedData = patientData.map(patient => ({
            id: patient.id || patient.patientId,
            name: patient.name || patient.patientName || patient.realName,
            relationship: patient.relationship || patient.relation || '本人',
            idCard: patient.idCard || patient.idNumber || patient.identityCard || '622*********0909',
            isDefault: patient.isDefault || patient.default || false,
            phone: patient.phone || patient.phoneNumber || patient.mobile
          }))
          
          this.setData({
            patientList: processedData
          })
        } else {
          this.setMockData()
        }
      },
      fail: (error) => {
        this.setMockData()
      },
      complete: () => {
        wx.hideLoading()
      }
    })
  },

  // 设置模拟数据
  setMockData() {
    const mockPatientData = [
      {
        id: 1,
        name: '蒋峰',
        relationship: '本人',
        idCard: '622*********0909',
        isDefault: false
      },
      {
        id: 2,
        name: '蒋林',
        relationship: '父母',
        idCard: '622*********0909',
        isDefault: true
      }
    ]
    
    this.setData({
      patientList: mockPatientData
    })
  },

  // 显示患者管理页面
  showPatientManagement() {
    this.setData({
      showPatientPage: true,
      showInpatientPage: false
    })
    this.loadPatientData()
  },

  // 显示住院人管理页面
  showInpatientManagement() {
    this.setData({
      showPatientPage: false,
      showInpatientPage: true
    })
  },

  // 住院人管理导航方法
  navigateToBindNumber() {
    wx.navigateTo({
      url: '/pages/2411Ayiliao-pages/inpatient/bind-number'
    })
  },

  navigateToConfirmInfo() {
    wx.navigateTo({
      url: '/pages/2411Ayiliao-pages/inpatient/confirm-info'
    })
  },

  navigateToBindSuccess() {
    wx.navigateTo({
      url: '/pages/2411Ayiliao-pages/inpatient/bind-success'
    })
  },

  navigateToInpatientInfo() {
    wx.navigateTo({
      url: '/pages/2411Ayiliao-pages/inpatient/inpatient-info'
    })
  },

  // 切换默认患者
  toggleDefault(e) {
    const patientId = e.currentTarget.dataset.id
    console.log('切换默认患者:', patientId)
    
    // 更新本地数据
    const updatedPatientList = this.data.patientList.map(patient => ({
      ...patient,
      isDefault: patient.id === patientId
    }))
    
    this.setData({
      patientList: updatedPatientList
    })
    
    // 发送到服务器更新默认状态
    this.setDefaultPatientOnServer(patientId)
  },

  // 从服务器设置默认患者
  setDefaultPatientOnServer(patientId) {
    console.log('开始设置默认患者，ID:', patientId)
    
    wx.showLoading({
      title: '设置中...'
    })
    
    // 尝试多种可能的API路径和方法
    const apiConfigs = [
      { url: `http://localhost:8080/patient/setDefault/${patientId}`, method: 'POST' },
      { url: `http://localhost:8080/patient/setDefault/${patientId}`, method: 'PUT' },
      { url: `http://localhost:8080/patient/setDefault/${patientId}`, method: 'PATCH' },
      { url: `http://localhost:8080/patient/${patientId}/setDefault`, method: 'POST' },
      { url: `http://localhost:8080/patient/${patientId}/setDefault`, method: 'PUT' },
      { url: `http://localhost:8080/patient/${patientId}/setDefault`, method: 'PATCH' },
      { url: `http://localhost:8080/patients/setDefault/${patientId}`, method: 'POST' },
      { url: `http://localhost:8080/patients/setDefault/${patientId}`, method: 'PUT' },
      { url: `http://localhost:8080/patients/${patientId}/setDefault`, method: 'POST' },
      { url: `http://localhost:8080/patients/${patientId}/setDefault`, method: 'PUT' },
      { url: `http://localhost:8080/api/patient/setDefault/${patientId}`, method: 'POST' },
      { url: `http://localhost:8080/api/patient/setDefault/${patientId}`, method: 'PUT' },
      { url: `http://localhost:8080/api/patient/${patientId}/setDefault`, method: 'POST' },
      { url: `http://localhost:8080/api/patient/${patientId}/setDefault`, method: 'PUT' }
    ]
    
    let currentIndex = 0
    
    const trySetDefault = () => {
      if (currentIndex >= apiConfigs.length) {
        wx.hideLoading()
        wx.showToast({
          title: '设置失败：API路径不存在',
          icon: 'none'
        })
        return
      }
      
      const config = apiConfigs[currentIndex]
      console.log(`尝试设置默认API: ${config.method} ${config.url}`)
      
      wx.request({
        url: config.url,
        method: config.method,
        header: {
          'Content-Type': 'application/json'
        },
        data: {
          patientId: patientId,
          isDefault: true
        },
        success: (res) => {
          console.log('设置默认响应:', res)
          wx.hideLoading()
          
          if (res.statusCode === 200 || res.statusCode === 201) {
            wx.showToast({
              title: '设置成功',
              icon: 'success'
            })
          } else if (res.statusCode === 404 || res.statusCode === 405) {
            // 尝试下一个API配置
            currentIndex++
            trySetDefault()
          } else {
            console.error('设置默认失败，状态码:', res.statusCode, '响应:', res.data)
            wx.showToast({
              title: `设置失败: ${res.statusCode}`,
              icon: 'none'
            })
          }
        },
        fail: (error) => {
          console.error('设置默认患者网络请求失败:', error)
          // 尝试下一个API配置
          currentIndex++
          trySetDefault()
        }
      })
    }
    
    trySetDefault()
  },

  // 添加新患者
  addNewPatient() {
    console.log('添加新患者')
    wx.navigateTo({
      url: '/pages/2411Ayiliao-pages/patient/add-patient'
    })
  },

  // 显示患者详情
  showPatientDetail(e) {
    const patient = e.currentTarget.dataset.patient
    console.log('显示患者详情:', patient)
    
    wx.navigateTo({
      url: `/pages/2411Ayiliao-pages/patient/patient-detail?id=${patient.id}&name=${patient.name}&relationship=${patient.relationship}&idCard=${patient.idCard}&phone=${patient.phone}&isDefault=${patient.isDefault}`
    })
  },

  // 删除患者
  deletePatient(patientId) {
    wx.showModal({
      title: '确认删除',
      content: '确定要删除这个就诊人吗？',
      success: (res) => {
        if (res.confirm) {
          this.deletePatientFromServer(patientId)
        }
      }
    })
  },

  // 从服务器删除患者
  deletePatientFromServer(patientId) {
    console.log('开始删除患者，ID:', patientId)
    
    wx.showLoading({
      title: '删除中...'
    })
    
    // 尝试多种可能的删除API路径
    const deleteUrls = [
      `http://localhost:8080/patient/delete/${patientId}`,
      `http://localhost:8080/patient/${patientId}`,
      `http://localhost:8080/patients/delete/${patientId}`,
      `http://localhost:8080/patients/${patientId}`,
      `http://localhost:8080/api/patient/delete/${patientId}`,
      `http://localhost:8080/api/patient/${patientId}`
    ]
    
    let currentIndex = 0
    
    const tryDelete = () => {
      if (currentIndex >= deleteUrls.length) {
        wx.hideLoading()
        wx.showToast({
          title: '删除失败：API路径不存在',
          icon: 'none'
        })
        return
      }
      
      const url = deleteUrls[currentIndex]
      console.log(`尝试删除API: ${url}`)
      
      wx.request({
        url: url,
        method: 'DELETE',
        header: {
          'Content-Type': 'application/json'
        },
        success: (res) => {
          console.log('删除响应:', res)
          wx.hideLoading()
          
          if (res.statusCode === 200) {
            wx.showToast({
              title: '删除成功',
              icon: 'success'
            })
            this.loadPatientData() // 刷新患者列表
          } else if (res.statusCode === 404) {
            // 尝试下一个API路径
            currentIndex++
            tryDelete()
          } else {
            console.error('删除失败，状态码:', res.statusCode, '响应:', res.data)
            wx.showToast({
              title: `删除失败: ${res.statusCode}`,
              icon: 'none'
            })
          }
        },
        fail: (error) => {
          console.error('删除患者网络请求失败:', error)
          // 尝试下一个API路径
          currentIndex++
          tryDelete()
        }
      })
    }
    
    tryDelete()
  },



  // 检查登录状态
  checkLoginStatus() {
    // 从本地存储获取用户信息
    const userInfo = wx.getStorageSync('userInfo');
    const phoneNumber = wx.getStorageSync('phoneNumber');
    const userOpenid = wx.getStorageSync('userOpenid');
    const isLoggedIn = wx.getStorageSync('isLoggedIn');
    
    // 使用全局方法检查登录状态
    const app = getApp();
    const globalLoginStatus = app ? app.getLoginStatus() : false;
    
    console.log('检查登录状态:', {
      userInfo: !!userInfo,
      phoneNumber: phoneNumber,
      userOpenid: !!userOpenid,
      localIsLoggedIn: isLoggedIn,
      globalLoginStatus: globalLoginStatus
    });
    
    // 检查登录状态：使用全局状态和本地状态双重检查
    if ((userOpenid && isLoggedIn) || globalLoginStatus) {
      console.log('✅ 用户已登录，openid:', userOpenid);
      this.setData({
        userInfo: {
          nickName: userInfo?.nickName || '铁蛋壮如牛',
          phoneNumber: phoneNumber || '未设置',
          avatarUrl: userInfo?.avatarUrl || '/static/avatar.png'
        }
      });
    } else {
      console.log('❌ 用户未登录，跳转到登录页面');
      // 如果没有登录，跳转到登录页面
      wx.redirectTo({
        url: '/pages/login/login'
      });
    }
  },



  // 处理记录点击
  handleRecordClick(e) {
    const item = e.currentTarget.dataset.item
    console.log('点击记录:', item)
    
    // 根据不同的记录类型跳转到相应的页面
    if (item.id === 'appointment_record') {
      wx.navigateTo({
        url: '/pages/2411Ayiliao-pages/appointment/record'
      })
    } else if (item.id === 'outpatient_payment_record') {
      wx.navigateTo({
        url: '/pages/outpatient-fees/outpatient-fees'
      })
    } else if (item.id === 'outpatient_recharge_record') {
      wx.navigateTo({
        url: '/pages/2411Ayiliao-pages/recharge/outpatient'
      })
    } else if (item.id === 'inpatient_recharge_record') {
      wx.navigateTo({
        url: '/pages/2411Ayiliao-pages/inpatient/recharge'
      })
    } else if (item.id === 'nucleic_acid_record') {
      wx.navigateTo({
        url: '/pages/2411Ayiliao-pages/nucleic/detail'
      })
    } else if (item.id === 'feedback') {
      wx.navigateTo({
        url: '/pages/2411Ayiliao-pages/feedback/feedback'
      })
    } else {
      wx.showToast({
        title: `${item.name}功能开发中`,
        icon: 'none',
        duration: 2000
      })
    }
  },

  // 处理患者点击
  handlePatientClick(e) {
    const patient = e.currentTarget.dataset.patient
    console.log('点击患者:', patient)
    
    wx.navigateTo({
      url: `/pages/2411Ayiliao-pages/patient/patient-detail?id=${patient.id}&name=${patient.name}`
    })
  },

  // 添加患者
  addPatient() {
    console.log('添加患者')
    wx.navigateTo({
      url: '/pages/2411Ayiliao-pages/patient/add-patient'
    })
  },

  // 编辑患者
  editPatient(e) {
    const patient = e.currentTarget.dataset.patient
    console.log('编辑患者:', patient)
    
    wx.navigateTo({
      url: `/pages/2411Ayiliao-pages/patient/add-patient?id=${patient.id}&name=${patient.name}&phone=${patient.phone}&idCard=${patient.idCard}`
    })
  },

  // 删除患者
  deletePatient(e) {
    const patient = e.currentTarget.dataset.patient
    console.log('删除患者:', patient)
    
    wx.showModal({
      title: '确认删除',
      content: `确定要删除患者 ${patient.name} 吗？`,
      success: (res) => {
        if (res.confirm) {
          this.deletePatientFromServer(patient.id)
        }
      }
    })
  },

  // 从服务器删除患者
  deletePatientFromServer(patientId) {
    // 模拟删除操作
    console.log('删除患者ID:', patientId)
    
    // 从本地数据中移除患者
    const updatedPatientList = this.data.patientList.filter(patient => patient.id !== patientId)
    this.setData({
      patientList: updatedPatientList
    })
    
    wx.showToast({
      title: '删除成功',
      icon: 'success'
    })
    
    // 如果需要连接真实数据库，请按以下步骤操作：
    // 1. 在微信小程序后台配置合法域名
    // 2. 将 localhost 改为实际的服务器域名
    // 3. 取消注释下面的代码
    
    /*
    wx.showLoading({
      title: '删除中...'
    })
    
    wx.request({
      url: `https://your-domain.com/patient/delete/${patientId}`,
      method: 'DELETE',
      header: {
        'Content-Type': 'application/json'
      },
      success: (res) => {
        if (res.statusCode === 200) {
          wx.showToast({
            title: '删除成功',
            icon: 'success'
          })
          this.loadPatientData() // 刷新患者列表
        } else {
          wx.showToast({
            title: '删除失败',
            icon: 'none'
          })
        }
      },
      fail: (error) => {
        console.error('删除患者失败:', error)
        wx.showToast({
          title: '网络请求失败',
          icon: 'none'
        })
      },
      complete: () => {
        wx.hideLoading()
      }
    })
    */
  },

  // 跳转到首页
  goToHome() {
    wx.redirectTo({
      url: '/pages/index/index'
    })
  },

           // 跳转到个人中心
         goToProfile() {
           // 已经在个人中心页面，不需要跳转
           wx.showToast({
             title: '已在个人中心',
             icon: 'none'
           })
         },


})